package com.ruoyi.system.api.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 付款计划管理对象 t_cw_payment_plan
 * 
 * @author ruoyi
 * @date 2023-03-02
 */
public class SysTCwPaymentPlan extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键自增 */
    private Long id;

    /** 付款单号 */
    @Excel(name = "付款单号")
    private String payOrderNo;

    /** 商户ID */
    @Excel(name = "商户ID")
    private Long businessId;

    /** 合同ID */
    @Excel(name = "合同ID")
    private Long contractId;

    /** 合同编号 */
    @Excel(name = "合同编号")
    private String contractNo;

    /** 合同类型
,"1：收房合同，
2：出房合同" */
    @Excel(name = "合同类型 ,1：收房合同， 2：出房合同")
    private Long contractType;

    /** 解约协议ID（解约时才有，收房是收房解约协议，出房是出房解约协议） */
    @Excel(name = "解约协议ID", readConverterExp = "解=约时才有，收房是收房解约协议，出房是出房解约协议")
    private Long tTerminationId;

    /** 楼盘ID */
    @Excel(name = "楼盘ID")
    private Long premiseId;

    /** 小区(使用楼盘名) */
    @Excel(name = "小区(使用楼盘名)")
    private String premiseName;

    /** 业主ID */
    @Excel(name = "业主ID")
    private Long ownerId;

    /** 业主姓名 */
    @Excel(name = "业主姓名")
    private String ownerName;

    /** 租客ID(面向租客付款时才有) */
    @Excel(name = "租客ID(面向租客付款时才有)")
    private Long tenantId;

    /** 租客姓名 */
    @Excel(name = "租客姓名")
    private String tenantName;
    @Excel(name = "房子名称")
    private String houseName;
    @Excel(name = "合同编号")
    private String sfContractNo;

    private Integer paymentId;

    public Integer getPaymentId() {
        return paymentId;
    }

    public void setPaymentId(Integer paymentId) {
        this.paymentId = paymentId;
    }

    public String getSfContractNo() {
        return sfContractNo;
    }

    public void setSfContractNo(String sfContractNo) {
        this.sfContractNo = sfContractNo;
    }

    public String getHouseName() {
        return houseName;
    }

    public void setHouseName(String houseName) {
        this.houseName = houseName;
    }

    /** 付款类型
,1:收房付款单 2：租务付款单 3：解约结算付款 4：续约结算付款 */
    @Excel(name = "付款类型 ,1:收房付款单 2：租务付款单 3：解约结算付款 4：续约结算付款")
    private Long payType;

    /** 付款状态
,"1、未付款；2、已付款
3、已中止"4、 4：已冻结（未付款的时候，才会变成已冻结，所以恢复冻结状态的时候，是恢复成未收款状态） */
    @Excel(name = "付款状态 ,1、未付款；2、已付款 3、已中止4、 4：已冻结", readConverterExp = "未=付款的时候，才会变成已冻结，所以恢复冻结状态的时候，是恢复成未收款状态")
    private Long payState;

    /** 账单类型（金融属性）,"1：收房贷变更
 2：退租变更
 3：普通账单(正常收房租务计划) 4：续约结算产生的" */
    @Excel(name = "账单类型", readConverterExp = "金=融属性")
    private Long billType;

    /** 款项（费用类型）
,1:水费 2：电费，3：煤/燃气费，80：租金，81：押金，90：解约结算，99:其它 */
    @Excel(name = "款项", readConverterExp = "费=用类型")
    private Long itemType;

    /** 其它款项
,款项为其它的时候，输入 */
    @Excel(name = "其它款项 ,款项为其它的时候，输入")
    private String otherItemName;

    /** 支付金额（应付金额） */
    @Excel(name = "支付金额", readConverterExp = "应=付金额")
    private BigDecimal paymentAmount;

    /** 实付金额 */
    @Excel(name = "实付金额")
    private BigDecimal realPaymentAmount;

    /** 选择账期（跟随的第几期房租对应的付款计划ID）,跟随一起付款的时候，应付日期选择设置为同一天 */
    @Excel(name = "选择账期", readConverterExp = "跟=随的第几期房租对应的付款计划ID")
    private Long withPayPlanId;

    /** 账期开始日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账期开始日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentDaysBegin;

    /** 账期截止日 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账期截止日", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentDaysEnd;

    /** 预定付款日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预定付款日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payableDate;

    /** 实际付款日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际付款日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paidTime;

    /** 第几期（收房付款的时候） */
    @Excel(name = "第几期", readConverterExp = "收=房付款的时候")
    private Long payNumber;

    /** 线下的支付方式（直接录已付款的计划时选择的）
,1:快捷同，2：支付宝，3：微信，4：现金，5：银行卡转账，6：POS机刷卡，99：其它 */
    @Excel(name = "线下的支付方式", readConverterExp = "直=接录已付款的计划时选择的")
    private Long payMethod;

    /** 其它支付方式
,支付方式为其它的时候，输入 */
    @Excel(name = "其它支付方式 ,支付方式为其它的时候，输入")
    private String otherPayMethod;

    /** 支付流水号 */
    @Excel(name = "支付流水号")
    private String payFlowNo;

    /** 租金(目前不含税，暂时和应付金额相同) */
    @Excel(name = "租金(目前不含税，暂时和应付金额相同)")
    private BigDecimal rentalPrice;

    /** 税费 */
    @Excel(name = "税费")
    private BigDecimal tax;

    /** 操作人 */
    @Excel(name = "操作人")
    private String operationUser;

    /** 总期数 */
    @Excel(name = "总期数")
    private Long totalPayNumber;

    /** 还款类型(手续费,担保费,本息) */
    @Excel(name = "还款类型(手续费,担保费,本息)")
    private Long repayType;

    /** 预留字段1 */
    @Excel(name = "预留字段1")
    private String reserve1;

    /** 预留字段2 */
    @Excel(name = "预留字段2")
    private Long reserve2;

    /** 预留字段3 */
    @Excel(name = "预留字段3")
    private String reserve3;

    /** 预留字段4 */
    @Excel(name = "预留字段4")
    private String reserve4;

    /** 预留字段5 */
    @Excel(name = "预留字段5")
    private String reserve5;

    /** 删除标识
,0:未删除，1：删除 */
    @Excel(name = "删除标识 ,0:未删除，1：删除")
    private Integer delFlg;

    /** 创建用户ID */
    @Excel(name = "创建用户ID")
    private Long createUserid;

    /** 更新用户ID */
    @Excel(name = "更新用户ID")
    private Long updateUserid;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setPayOrderNo(String payOrderNo) 
    {
        this.payOrderNo = payOrderNo;
    }

    public String getPayOrderNo() 
    {
        return payOrderNo;
    }
    public void setBusinessId(Long businessId) 
    {
        this.businessId = businessId;
    }

    public Long getBusinessId() 
    {
        return businessId;
    }
    public void setContractId(Long contractId) 
    {
        this.contractId = contractId;
    }

    public Long getContractId() 
    {
        return contractId;
    }
    public void setContractNo(String contractNo) 
    {
        this.contractNo = contractNo;
    }

    public String getContractNo() 
    {
        return contractNo;
    }
    public void setContractType(Long contractType) 
    {
        this.contractType = contractType;
    }

    public Long getContractType() 
    {
        return contractType;
    }
    public void settTerminationId(Long tTerminationId) 
    {
        this.tTerminationId = tTerminationId;
    }

    public Long gettTerminationId() 
    {
        return tTerminationId;
    }
    public void setPremiseId(Long premiseId) 
    {
        this.premiseId = premiseId;
    }

    public Long getPremiseId() 
    {
        return premiseId;
    }
    public void setPremiseName(String premiseName) 
    {
        this.premiseName = premiseName;
    }

    public String getPremiseName() 
    {
        return premiseName;
    }
    public void setOwnerId(Long ownerId) 
    {
        this.ownerId = ownerId;
    }

    public Long getOwnerId() 
    {
        return ownerId;
    }
    public void setOwnerName(String ownerName) 
    {
        this.ownerName = ownerName;
    }

    public String getOwnerName() 
    {
        return ownerName;
    }
    public void setTenantId(Long tenantId) 
    {
        this.tenantId = tenantId;
    }

    public Long getTenantId() 
    {
        return tenantId;
    }
    public void setTenantName(String tenantName) 
    {
        this.tenantName = tenantName;
    }

    public String getTenantName() 
    {
        return tenantName;
    }
    public void setPayType(Long payType) 
    {
        this.payType = payType;
    }

    public Long getPayType() 
    {
        return payType;
    }
    public void setPayState(Long payState) 
    {
        this.payState = payState;
    }

    public Long getPayState() 
    {
        return payState;
    }
    public void setBillType(Long billType) 
    {
        this.billType = billType;
    }

    public Long getBillType() 
    {
        return billType;
    }
    public void setItemType(Long itemType) 
    {
        this.itemType = itemType;
    }

    public Long getItemType() 
    {
        return itemType;
    }
    public void setOtherItemName(String otherItemName) 
    {
        this.otherItemName = otherItemName;
    }

    public String getOtherItemName() 
    {
        return otherItemName;
    }
    public void setPaymentAmount(BigDecimal paymentAmount) 
    {
        this.paymentAmount = paymentAmount;
    }

    public BigDecimal getPaymentAmount() 
    {
        return paymentAmount;
    }
    public void setRealPaymentAmount(BigDecimal realPaymentAmount) 
    {
        this.realPaymentAmount = realPaymentAmount;
    }

    public BigDecimal getRealPaymentAmount() 
    {
        return realPaymentAmount;
    }
    public void setWithPayPlanId(Long withPayPlanId) 
    {
        this.withPayPlanId = withPayPlanId;
    }

    public Long getWithPayPlanId() 
    {
        return withPayPlanId;
    }
    public void setPaymentDaysBegin(Date paymentDaysBegin) 
    {
        this.paymentDaysBegin = paymentDaysBegin;
    }

    public Date getPaymentDaysBegin() 
    {
        return paymentDaysBegin;
    }
    public void setPaymentDaysEnd(Date paymentDaysEnd) 
    {
        this.paymentDaysEnd = paymentDaysEnd;
    }

    public Date getPaymentDaysEnd() 
    {
        return paymentDaysEnd;
    }
    public void setPayableDate(Date payableDate) 
    {
        this.payableDate = payableDate;
    }

    public Date getPayableDate() 
    {
        return payableDate;
    }
    public void setPaidTime(Date paidTime) 
    {
        this.paidTime = paidTime;
    }

    public Date getPaidTime() 
    {
        return paidTime;
    }
    public void setPayNumber(Long payNumber) 
    {
        this.payNumber = payNumber;
    }

    public Long getPayNumber() 
    {
        return payNumber;
    }
    public void setPayMethod(Long payMethod) 
    {
        this.payMethod = payMethod;
    }

    public Long getPayMethod() 
    {
        return payMethod;
    }
    public void setOtherPayMethod(String otherPayMethod) 
    {
        this.otherPayMethod = otherPayMethod;
    }

    public String getOtherPayMethod() 
    {
        return otherPayMethod;
    }
    public void setPayFlowNo(String payFlowNo) 
    {
        this.payFlowNo = payFlowNo;
    }

    public String getPayFlowNo() 
    {
        return payFlowNo;
    }
    public void setRentalPrice(BigDecimal rentalPrice) 
    {
        this.rentalPrice = rentalPrice;
    }

    public BigDecimal getRentalPrice() 
    {
        return rentalPrice;
    }
    public void setTax(BigDecimal tax) 
    {
        this.tax = tax;
    }

    public BigDecimal getTax() 
    {
        return tax;
    }
    public void setOperationUser(String operationUser) 
    {
        this.operationUser = operationUser;
    }

    public String getOperationUser() 
    {
        return operationUser;
    }
    public void setTotalPayNumber(Long totalPayNumber) 
    {
        this.totalPayNumber = totalPayNumber;
    }

    public Long getTotalPayNumber() 
    {
        return totalPayNumber;
    }
    public void setRepayType(Long repayType) 
    {
        this.repayType = repayType;
    }

    public Long getRepayType() 
    {
        return repayType;
    }
    public void setReserve1(String reserve1)
    {
        this.reserve1 = reserve1;
    }

    public String getReserve1()
    {
        return reserve1;
    }
    public void setReserve2(Long reserve2) 
    {
        this.reserve2 = reserve2;
    }

    public Long getReserve2() 
    {
        return reserve2;
    }
    public void setReserve3(String reserve3) 
    {
        this.reserve3 = reserve3;
    }

    public String getReserve3() 
    {
        return reserve3;
    }
    public void setReserve4(String reserve4) 
    {
        this.reserve4 = reserve4;
    }

    public String getReserve4() 
    {
        return reserve4;
    }
    public void setReserve5(String reserve5) 
    {
        this.reserve5 = reserve5;
    }

    public String getReserve5() 
    {
        return reserve5;
    }
    public void setDelFlg(Integer delFlg) 
    {
        this.delFlg = delFlg;
    }

    public Integer getDelFlg() 
    {
        return delFlg;
    }
    public void setCreateUserid(Long createUserid) 
    {
        this.createUserid = createUserid;
    }

    public Long getCreateUserid() 
    {
        return createUserid;
    }
    public void setUpdateUserid(Long updateUserid) 
    {
        this.updateUserid = updateUserid;
    }

    public Long getUpdateUserid() 
    {
        return updateUserid;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("payOrderNo", getPayOrderNo())
            .append("businessId", getBusinessId())
            .append("contractId", getContractId())
            .append("contractNo", getContractNo())
            .append("contractType", getContractType())
            .append("tTerminationId", gettTerminationId())
            .append("premiseId", getPremiseId())
            .append("premiseName", getPremiseName())
            .append("ownerId", getOwnerId())
            .append("ownerName", getOwnerName())
            .append("tenantId", getTenantId())
            .append("tenantName", getTenantName())
            .append("payType", getPayType())
            .append("payState", getPayState())
            .append("billType", getBillType())
            .append("itemType", getItemType())
            .append("otherItemName", getOtherItemName())
            .append("paymentAmount", getPaymentAmount())
            .append("realPaymentAmount", getRealPaymentAmount())
            .append("withPayPlanId", getWithPayPlanId())
            .append("paymentDaysBegin", getPaymentDaysBegin())
            .append("paymentDaysEnd", getPaymentDaysEnd())
            .append("payableDate", getPayableDate())
            .append("paidTime", getPaidTime())
            .append("payNumber", getPayNumber())
            .append("payMethod", getPayMethod())
            .append("otherPayMethod", getOtherPayMethod())
            .append("payFlowNo", getPayFlowNo())
            .append("rentalPrice", getRentalPrice())
            .append("tax", getTax())
            .append("operationUser", getOperationUser())
            .append("totalPayNumber", getTotalPayNumber())
            .append("repayType", getRepayType())
            .append("remark", getRemark())
            .append("reserve1", getReserve1())
            .append("reserve2", getReserve2())
            .append("reserve3", getReserve3())
            .append("reserve4", getReserve4())
            .append("reserve5", getReserve5())
            .append("delFlg", getDelFlg())
            .append("createUserid", getCreateUserid())
            .append("createTime", getCreateTime())
            .append("updateUserid", getUpdateUserid())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
